﻿using System.Collections.Generic;
using Fuse8.ContentManagementFramework.Domain;
using Fuse8.ContentManagementFramework.Web.MvcPowered;
using Fuse8.ContentManagementFramework.Web.MvcPowered.Components.Models;

namespace Fuse8.ContentManagementFramework.Web.Etc.PagePresent
{
    /// <summary>
    /// Provides contract for presenting CmsPage
    /// </summary>
    public interface IPagePresentStrategy
    {
        /// <summary>
        /// Inits startegy
        /// </summary>
        /// <param name="page">CmsPage to present</param>
        void Init(CmsPage page);

        /// <summary>
        /// Gets list (tree) of items that present page in navigation control
        /// </summary>
        /// <returns></returns>
        IEnumerable<CmsPageComponentItemForNavigation> GetNavigationItems();
        
        /// <summary>
        /// Gets list of items that present page in breadcrumb control
        /// </summary>
        /// <returns></returns>
        IEnumerable<CmsPageComponentItem> GetBreadcrumbItems();

        /// <summary>
        /// Gets page meta keywords
        /// </summary>
        /// <returns></returns>
        string GetPageMetaKeywords();

        /// <summary>
        /// Gets page meta title
        /// </summary>
        /// <returns></returns>
        string GetPageMetaTitle();

        /// <summary>
        /// Get page meta description
        /// </summary>
        /// <returns></returns>
        string GetPageMetaDescription();

        /// <summary>
        /// Gets page H1 header
        /// </summary>
        /// <returns></returns>
        string GetPageH1();
    }
}